#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'

API_AUTH_KEY=""
API_URL="localhost/admin/api.php"
URL_READ_ONLY="?summaryRaw"
URL_QUERY_TYPE="?getQueryTypes&auth="


#/ Description: BASH script to get Pi-hole stats
#/ Examples: ./pi-hole-stats.sh
#/ Options:
#/   --help: Display this help message
#/   --debug: Brief check of system env and script vars
usage() {
	grep '^#/' "$0" | cut -c4- ;
	exit 0 ;
}

debug() {
	if ! [ -x "$(command -v tr)" ]; then
		echo '[error] tr binary not available, please install it'
	else
		echo '[ok] tr bin';
	fi

	if ! [ -x "$(command -v jq)" ]; then
		echo '[error] jq binary not available, please install it'
	else
		echo '[ok] jq bin';
	fi

	if ! [ -x "$(command -v curl)" ]; then
		echo '[error] curl binary not available, please install it'
	else
		echo '[ok] curl bin'
	fi

	if [ -z "$API_URL" ]; then
		echo '[error] API_URL is not set'
	else
		echo '[ok] API_URL is set'
	fi

	if [ -z $API_AUTH_KEY ]; then
		echo '[warning] API_AUTH_KEY is not set, some values will not be available'
	else
		echo '[ok] API_AUTH_KEY is set'
	fi

	if [ -z ${URL_READ_ONLY} ]; then
		echo '[error] URL_READ_ONLY is not set'
	else
		echo '[ok] URL_READ_ONLY is set'
	fi

	if [ -z ${URL_QUERY_TYPE} ]; then
		echo '[error] URL_QUERY_TYPE is not set'
	else
		echo '[ok] URL_QUERY_TYPE not set'
	fi
}

exportdata() {
	# domains_being_blocked / dns_query_total / ads_blocked_today / ads_percentage_today
	# unique_domains / queries_forwarded / queries_cached
	GET_STATS=$(curl -s $API_URL$URL_READ_ONLY | jq '.[]')
	echo $GET_STATS | tr " " "\n"
	# A / AAAA / PTR / SRV
	GET_QUERY_TYPE=$(curl -s $API_URL$URL_QUERY_TYPE$API_AUTH_KEY | jq '.[][]')
	echo $GET_QUERY_TYPE | tr " " "\n"
}

if [ -z $* ]; then
        exportdata
fi
expr "$*" : ".*--help" > /dev/null && usage
expr "$*" : ".*--debug" > /dev/null && debug
